# -*_coding:utf-8 -*
import os
import shutil
# 定义源项目目录和目标项目目录
source_project_dir ='hba fpga dev'
target_project_dir = 'hba sasl satal'
# 定义file list文件的路径
file_list_path='src file.list'
# 打开file list文件并逐行读取
with open (file_list_path,'r') as file:
    for line in file:
    #去除行尾的换行符和空白字符
        line = line.strip()
    # 如果行为空，则跳过
        if not line:
            continue
    #如果行以+incdir+开头，处理目录
        if line.startswith('+incdir+'):
            relative_dir =line[len('+incdir+'):].strip()
    # 构建源目录和目标目录的完整路径
        source_dir = os.path.join(source_project_dir, relative_dir)
        target_dir = os.path.join(target_project_dir, relative_dir)
    # 确保目标目录存在，如果不存在则创建
        if not os.path.exists(target_dir):
            os.makedirs(target_dir)
    #复制目录中的所有文件
        for root, dirs, files in os.walk(source_dir):
            for file_name in files:
                source_file = os.path.join(root, file_name)
    # 计算目标文件的相对路径
            relative_path =os.path.relpath(source_file, source_dir)
            target_file =os.path.join(target_dir, relative_path)
    #确保目标文件的目录存在
            target_file_dir = os.path.dirname(target_file)
            if not os.path.exists(target_file_dir):
                os.makedirs(target_file_dir)
    # 复制文件
            shutil.copy2(source_file,target_file)
            print ('Copied:{}->{}',format(source_file, target_file))
    #否则，处理单个文件
    else:
    # 构建源文件和目标文件的完整路径
        source_file =os.path.join(source_project_dir, line)
        target_file =os.path.join(target_project_dir, line)
    # 确保目标文件的目录存在，如果不存在则创建
        target_file_dir = os.path.dirname(target_file)
    if not os.path.exists(target_file_dir):
        os.makedirs(target_file_dir)
    # 复制文件
    if os.path.exists(source_file):

        print ('Copied:{}->{}'.format(source_file, target_file))
        print ('All files and directories copied successfully.')
        shutil.copy2(source_file,target_file)
        print ('All files and directories copied successfully.')